package org.nw.rapid_framework.generator;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import org.nw.rapid_framework.generator.util.PropertiesHelper;

/**
 * 根据数据源生成vo主入口
 * 
 * @author badqiu
 * @email badqiu(a)gmail.com
 */

public class GeneratorMain {

	static Properties nwProp = new Properties();
	static String nwPropFile = "nw.properties";

	/**
	 * 为了在generator中使用nw.properties中定义的变量product.code
	 */
	static {
		try {
			PropertiesHelper.loadAllPropertiesFromClassLoader(nwProp, nwPropFile);
			for(Object key : nwProp.keySet()) {
				System.setProperty(key.toString(), nwProp.getProperty(key.toString()).trim());
			}
		} catch(IOException e) {
			throw new RuntimeException("Load " + nwPropFile + " error", e);
		}
	}

	/**
	 * 请直接修改以下代码调用不同的方法以执行相关生成任务.
	 */
	public static void main(String[] args) throws Exception {
		Context context = new Context();
		/**************
		 * 根据数据库表生成vo时需要设置的内容,
		 */
		context.setBasepackage("org.nw.vo.sys");// 包名
		// 1、单主表
		context.setParentTable("nw_user_portlet");// 主表
		// 2、主子表
		// context.setParentTable("ts_assist_tools_mgr");// 主表
		// context.setChildrenTable(new String[] { "ts_assist_tools_mgr_b" });//
		// context.setParentpk_in_child(new String[] { "pk_assist_tools_mgr"
		// });// 子表关联主表的字段
		/************** 设置结束 *********************/

		if(context.getParentTable() == null || context.getParentTable().length() == 0) {
			throw new RuntimeException("主表名称不能为空!");
		}
		GeneratorFacade g = new GeneratorFacade();
		g.g.setContext(context);// 设置上下文
		// g.deleteOutRootDir(); // 删除生成器的输出目录
		List<String> tableAry = new ArrayList<String>();
		tableAry.add(context.getParentTable());
		if(context.getChildrenTable() != null && context.getChildrenTable().length > 0) {
			for(String table : context.getChildrenTable()) {
				tableAry.add(table);
			}
		}
		String[] tables = tableAry.toArray(new String[tableAry.size()]);
		for(int i = 0; i < tables.length; i++) {
			GeneratorProperties.setProperty("basepackage", context.getBasepackage());// 包名
			g.generateByTable(tables[i], GeneratorProperties.getRequiredProperty("templateRootDir")); // 通过数据库表生成文件,template为模板的根目录
		}
		// 打开文件夹
		Runtime.getRuntime().exec("cmd.exe /c start " + GeneratorProperties.getRequiredProperty("outRoot"));
	}
}
